Memory devices are typically provided as internal, semiconductor, integrated circuits and/or external removable devices in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and can include random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can retain stored data when not powered and can include NAND flash memory, NOR flash memory, phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetic random access memory (MRAM), among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory (e.g., NAND flash memory and/or NOR flash memory), and/or can include volatile memory (e.g., DRAM and/or SRAM), among various other types of non-volatile and volatile memory. Flash memory devices can include memory cells storing data in a charge storage structure such as a floating gate, for instance, and may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption.
An SSD can be used to replace hard disk drives as the main storage volume for a computer, as the solid state drive can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electro-mechanical delays associated with magnetic disk drives.
Some memory cells (e.g., Flash cells, phase change cells, etc.) are capable of being operated (e.g., programed, read, erased, etc.) in both a single level cell (SLC) mode and an extra level cell (XLC) mode (e.g., 2-bit mode, 3-bit mode, 4-bit mode, etc.). Such cells can be referred to as “mixed mode” memory cells. An SLC memory cell can refer to a cell programmed to a targeted one of two different data states and configured to store a single data unit (e.g., one bit). XLC memory cells can refer to cells programmed to a targeted one of more than two different data states such that they are configured to store more than a single data unit (e.g., 2 bits, 2.5 bits, 3 bits, 4 bits, etc.). XLC cells may be referred to as multi state memory cells, multiunit cells, or multilevel cells. XLCs can provide higher density memories without increasing the number of memory cells since each cell can represent more than one data unit.
In various instances, SSDs may be configured to write host data in SLC mode. However, as the available memory space fills up, data written in SLC mode can be rewritten in XLC mode to free up space. A garbage collection process can be used to select particular blocks for erasure and/or to select the manner in which data written in SLC mode is to be “folded” into XLC blocks. Garbage collection processes can result in data fragmentation. For example, garbage collection can result in sequentially written workloads being relocated (e.g., to different blocks) such that the data is no longer stored sequentially (e.g., such that the data is stored in a logically non-sequential manner).